package com.ruoyi.wms.domain;

import java.util.Date;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.core.utils.StringUtils;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.ToString;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.core.annotation.Excel;
import com.ruoyi.common.core.web.domain.BaseEntity;

/**
 * 机动车注销登记申请对象 lv_vehicle_cancellation
 *
 * @author libancang
 * @date 2025-09-12
 */
@Data
@ToString
@ApiModel(value = "机动车注销登记申请对象", description = "机动车注销登记申请对象")
public class VehicleCancellation  {
    private static final long serialVersionUID = 1L;

    /**
     * $column.columnComment
     */
    private String id;


    /**
     * 申请编号
     */
    @ApiModelProperty(value = "申请编号")
    private String applicationNo;

    /**
     * 车牌号码
     */
    @ApiModelProperty(value = "车牌号码")
    private String plateNo;

    /**
     * 申请事项
     */
    @ApiModelProperty(value = "申请事项用数组")
    private String[] applicationItemArr;
    private String applicationItem; // 用于数据库存储的字符串形式

    /**
     * 注销原因
     */
    @ApiModelProperty(value = "注销原因用数组")
    private String[]  cancellationReasonArr;
    private String  cancellationReason;

    /**
     * 品牌型号
     */
    @ApiModelProperty(value = "品牌型号")
    private String brandModel;

    /**
     * 车辆识别代码
     */
    @ApiModelProperty(value = "车辆识别代码")
    private String vin;

    /**
     * 获得方式
     */
    @ApiModelProperty(value = "获得方式")
    private String acquisitionMethod;

    /**
     * 使用性质
     */
    @ApiModelProperty(value = "使用性质")
    private String usageNature;

    /**
     * 车主姓名
     */
    @ApiModelProperty(value = "车主姓名")
    private String ownerName;

    /**
     * 邮寄地址
     */
    @ApiModelProperty(value = "邮寄地址")
    private String mailingAddress;

    /**
     * 邮政编码
     */
    @ApiModelProperty(value = "邮政编码")
    private String postalCode;

    /**
     * 固定电话
     */
    @ApiModelProperty(value = "固定电话")
    private String landlinePhone;

    /**
     * 移动电话
     */
    @ApiModelProperty(value = "移动电话")
    private String phone;

    /**
     * 电子信箱
     */
    @ApiModelProperty(value = "电子信箱")
    private String email;

    /**
     * 转移出车辆管理所辖区的转移登记
     */
    @ApiModelProperty(value = "转移出车辆管理所辖区的转移登记")
    private String transferOut;

    /**
     * 代理人姓名/名称
     */
    @ApiModelProperty(value = "代理人姓名/名称")
    private String agentName;

    /**
     * 代理人邮寄地址
     */
    @ApiModelProperty(value = "代理人邮寄地址")
    private String agentAddress;

    /**
     * 代理人邮政编码
     */
    @ApiModelProperty(value = "代理人邮政编码")
    private String agentPostalCode;

    /**
     * 代理人固定电话
     */
    @ApiModelProperty(value = "代理人固定电话")
    private String agentLandline;

    /**
     * 代理人电子信箱
     */
    @ApiModelProperty(value = "代理人电子信箱")
    private String agentEmail;

    /**
     * 代理人移动电话
     */
    @ApiModelProperty(value = "代理人移动电话")
    private String agentPhone;

    /**
     * 经办人姓名
     */
    @ApiModelProperty(value = "经办人姓名")
    private String handlerName;

    /**
     * 经办人联系电话
     */
    @ApiModelProperty(value = "经办人联系电话")
    private String handlerPhone;

    /**
     * 申请日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty(value = "申请日期" )
    private Date applicationDate;

    /**
     * 申请状态
     */
    @ApiModelProperty(value = "申请状态")
    private String status;

    /**
     * 修改时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty(value = "修改时间"  )
    private String updateDate;

    /**
     * 创建对象
     */
    @ApiModelProperty(value = "创建对象")
    private String createUser;

    /**
     * 创建日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty(value = "创建日期 yyyy-MM-dd")
    private String createDate;

    /**
     * 所属公司组织
     */
    @ApiModelProperty(value = "所属公司组织")
    private String orgCode;

    /**
     * 订单号
     */
    @ApiModelProperty(value = "采购订单号")
    private String orderNum;

    /**
     * 车牌颜色  (黄色/蓝色/黄绿色)
     */
    @ApiModelProperty(value = "车牌颜色  (黄色/蓝色/黄绿色)")
    private String plateColor;
    @ApiModelProperty(value = "备注")
    private String remark;




    // applicationItem 只需要 getter 方法
    public String getApplicationItem() {
        if (applicationItemArr == null || applicationItemArr.length == 0) {
            return null;
        }
        return String.join(",", applicationItemArr);
    }

    // 只写 cancellationReason 的 getter 方法
    public String getCancellationReason() {
        if (cancellationReasonArr == null || cancellationReasonArr.length == 0) {
            return null;
        }
        return String.join(",", cancellationReasonArr);
    }

    public String[] getApplicationItemArr() {
        if ( StringUtils.isNotEmpty( applicationItem)) {
            return applicationItem.split(",");
        }
        return applicationItemArr;
    }

    public String[] getCancellationReasonArr() {
        if ( StringUtils.isNotEmpty( cancellationReason)) {
            return cancellationReason.split(",");
        }
        return cancellationReasonArr;
    }
}
